%% 三角形式傅里叶级数
% Tri_Fourier_series
function [ak,bk]=Tri_Fourier_series(f,w0,km,xmin,dx,xmax)
% 函数说明：
% 输入量f为信号，w0为f基频，km为求傅里叶级数最大基频倍数，xmin为自变量最小值，
% dx为自变量变化间隔，xmax为自变量最大值，输出[ak,bk]为傅里叶级数系数
%% 函数初始化
% xmin=-10;% 自变量最小值
% xmax=10;% 自变量最大值
% dx=1e-4;% 自变量变化间隔
x=xmin:dx:xmax;
% w0=2*pi;% 基频
% f=sin(w0*x)+sin(3*w0*x)+5*sin(5*w0*x);% 原始信号
% km=10;% 需要分解的最高基频倍数
%% 建构函数
ak=zeros(1,km);bk=zeros(1,km);
a0=sum(f)/(xmax-xmin);
for i=1:km
    ak(i)=2*sum(f.*cos(i*w0*x)*dx)/(xmax-xmin);
    bk(i)=2*sum(f.*sin(i*w0*x)*dx)/(xmax-xmin);
end
ak=[a0,ak];
end